package utility

import (
	"context"
	"fmt"
	"mldong/api/auth"
	"mldong/internal/consts"

	"github.com/gogf/gf/v2/frame/g"
)

/**
* 设置当前用户
 */
func SetCurrentUser(ctx context.Context, user auth.LoginUserVO) {
	// 获取当前请求对象
	r := g.RequestFromCtx(ctx)
	r.SetCtxVar(consts.UserInfoKey, user)
}

/**
* 获取当前用户
 */
func GetCurrentUser(ctx context.Context) (auth.LoginUserVO, error) {
	// 获取当前请求对象
	r := g.RequestFromCtx(ctx)
	var user auth.LoginUserVO
	err := r.GetCtxVar(consts.UserInfoKey).Scan(&user)
	fmt.Println(err)
	return user, err
}

/**
* 获取当前用户ID
 */
func GetCurrentUserId(ctx context.Context) string {
	user, err := GetCurrentUser(ctx)
	if err == nil {
		return user.UserId
	}
	return ""
}

/**
* 获取当前用户名
 */
func GetCurrentUserName(ctx context.Context) string {
	user, err := GetCurrentUser(ctx)
	if err == nil {
		return user.UserName
	}
	return ""
}

/**
* 获取当前用户真实名称
 */
func GetCurrentRealName(ctx context.Context) string {
	user, err := GetCurrentUser(ctx)
	if err == nil {
		return user.RealName
	}
	return ""
}

/**
* 获取当前用户所属部门ID
 */
func GetCurrentDeptId(ctx context.Context) string {
	user, err := GetCurrentUser(ctx)
	if err == nil {
		return user.DeptId
	}
	return ""
}

/**
* 获取当前用户所属部门名称
 */
func GetCurrentDeptName(ctx context.Context) string {
	user, err := GetCurrentUser(ctx)
	if err == nil {
		return user.DeptName
	}
	return ""
}

/**
* 获取当前用户所属部门编码
 */
func GetCurrentDeptCode(ctx context.Context) string {
	user, err := GetCurrentUser(ctx)
	if err == nil {
		return user.DeptCode
	}
	return ""
}

/**
* 获取当前用户所属岗位ID
 */
func GetCurrentPostId(ctx context.Context) string {
	user, err := GetCurrentUser(ctx)
	if err == nil {
		return user.PostId
	}
	return ""
}

/**
* 获取当前用户所属岗位名称
 */
func GetCurrentPostName(ctx context.Context) string {
	user, err := GetCurrentUser(ctx)
	if err == nil {
		return user.PostName
	}
	return ""
}

/**
* 获取当前用户所属岗位编码
 */
func GetCurrentPostCode(ctx context.Context) string {
	user, err := GetCurrentUser(ctx)
	if err == nil {
		return user.PostCode
	}
	return ""
}

/**
* 获取当前用户所属岗位编码
 */
func GetCurrentMobilePhone(ctx context.Context) string {
	user, err := GetCurrentUser(ctx)
	if err == nil {
		return user.MobilePhone
	}
	return ""
}

/**
* 获取当前用户所属角色编码
 */
func GetCurrentRoleCodes(ctx context.Context) []string {
	user, err := GetCurrentUser(ctx)
	if err == nil {
		return user.RoleCodes
	}
	return []string{}
}

/**
* 获取当前用户所属角色名称
 */
func GetCurrentRoleNames(ctx context.Context) []string {
	user, err := GetCurrentUser(ctx)
	if err == nil {
		return user.RoleNames
	}
	return []string{}
}

/**
* 获取当前用户所属角色ids
 */
func GetCurrentRoleIds(ctx context.Context) string {
	user, err := GetCurrentUser(ctx)
	if err == nil {
		return user.RoleIds
	}
	return ""
}
